/************************************************************
** Archivo:		ProveedorView
** Autor:		
** Fecha:		16/05/2009 19:19:06
** Descripción:	Clase generada automáticamente
** Cliente:		SC
** Proyecto:	eWedding
************************************************************/

using System;
using System.Collections.Generic;
using System.Text;

using Circo.Framework.BusinessLogic;
using Circo.Framework.Persistencia;

using SC.eWedding.Data.Entities;


namespace SC.eWedding.BusinessLogic.Views
{
    public partial class ProveedorView : AbstractView
    {
    
        #region Private Vars

		private ProveedorEntity _proveedor;

        #endregion

        #region Constructors

		
		public ProveedorView()
		{
			CrearVista(false);
		}

		public ProveedorView(bool createRelatedViews)
		{
			CrearVista(createRelatedViews);
		}

		private void CrearVista(bool createRelatedViews)
		{
			this._proveedor = new ProveedorEntity();

			if (createRelatedViews)

			{

				this.Provincia = new ProvinciaView(true);

				this.Localidad = new LocalidadView(true);

			}

		}

		public ProveedorView(ProveedorEntity unaEntidad)
		{
			if (unaEntidad != null)
				this._proveedor = unaEntidad;

		}



        #endregion
        
        #region Attributes

		
		public int Id
		{
			get { return this._proveedor.Id; }
			set { this._proveedor.Id = value; }
		}

		public string Nombre
		{
			get { return this._proveedor.Nombre; }
			set { this._proveedor.Nombre = value; }
		}


private List<ProdSerView> _servicios;
		public List<ProdSerView> Servicios
		{
			get
			{
				if (_servicios == null)
				{
					List<ProdSerEntity> listaEntidades = this._proveedor.Servicios;

					this._servicios = new List<ProdSerView>();

					foreach (ProdSerEntity unaEntidad in listaEntidades)

						this._servicios.Add(new ProdSerView(unaEntidad));

				}
				return _servicios;
			}
			set
			{
				this._servicios = value;
				if (value != null)
				{
					List<ProdSerEntity> listaEntidades = new List<ProdSerEntity>();

					foreach (ProdSerView unaView in value)

						listaEntidades.Add(unaView.MapToEntity());

					this._proveedor.Servicios = listaEntidades;

				}
				else
				{
					this._proveedor.Servicios = null;

				}
			}
		}

		private ProvinciaView _provincia = null;
		public ProvinciaView Provincia
		{
			get
			{
				if (this._provincia == null)
				{
					if (this._proveedor.Provincia != null)
						this._provincia = new ProvinciaView(this._proveedor.Provincia);
				}
				return _provincia;
			}
			set
			{
				if (value != null)
				{
					this._proveedor.Provincia = value.MapToEntity();
					this._provincia = new ProvinciaView(this._proveedor.Provincia);
				}
				else
				{
					this._proveedor.Provincia = null;
					this._provincia = null;
				}
			}
		}

		public string Direccion
		{
			get { return this._proveedor.Direccion; }
			set { this._proveedor.Direccion = value; }
		}

		private LocalidadView _localidad = null;
		public LocalidadView Localidad
		{
			get
			{
				if (this._localidad == null)
				{
					if (this._proveedor.Localidad != null)
						this._localidad = new LocalidadView(this._proveedor.Localidad);
				}
				return _localidad;
			}
			set
			{
				if (value != null)
				{
					this._proveedor.Localidad = value.MapToEntity();
					this._localidad = new LocalidadView(this._proveedor.Localidad);
				}
				else
				{
					this._proveedor.Localidad = null;
					this._localidad = null;
				}
			}
		}

		public string Telefono
		{
			get { return this._proveedor.Telefono; }
			set { this._proveedor.Telefono = value; }
		}


private List<ProdSerView> _prodServicios;
		public List<ProdSerView> ProdServicios
		{
			get
			{
				if (_prodServicios == null)
				{
					List<ProdSerEntity> listaEntidades = this._proveedor.ProdServicios;

					this._prodServicios = new List<ProdSerView>();

					foreach (ProdSerEntity unaEntidad in listaEntidades)

						this._prodServicios.Add(new ProdSerView(unaEntidad));

				}
				return _prodServicios;
			}
			set
			{
				this._prodServicios = value;
				if (value != null)
				{
					List<ProdSerEntity> listaEntidades = new List<ProdSerEntity>();

					foreach (ProdSerView unaView in value)

						listaEntidades.Add(unaView.MapToEntity());

					this._proveedor.ProdServicios = listaEntidades;

				}
				else
				{
					this._proveedor.ProdServicios = null;

				}
			}
		}

		public string Mail
		{
			get { return this._proveedor.Mail; }
			set { this._proveedor.Mail = value; }
		}

		public string NombreUsuario
		{
			get { return this._proveedor.NombreUsuario; }
			set { this._proveedor.NombreUsuario = value; }
		}

		public string Contrasenia
		{
			get { return this._proveedor.Contrasenia; }
			set { this._proveedor.Contrasenia = value; }
		}

		public string NombreResp
		{
			get { return this._proveedor.NombreResp; }
			set { this._proveedor.NombreResp = value; }
		}

		public string ApellidoResp
		{
			get { return this._proveedor.ApellidoResp; }
			set { this._proveedor.ApellidoResp = value; }
		}

		public string DNIResp
		{
			get { return this._proveedor.DNIResp; }
			set { this._proveedor.DNIResp = value; }
		}

		public bool Activo
		{
			get { return this._proveedor.Activo; }
			set { this._proveedor.Activo = value; }
		}

		public TiposDNI TipoDNI
		{
			get { return (TiposDNI)this._proveedor.TipoDNI; }
			set { this._proveedor.TipoDNI = (short)value; }
		}


        #endregion

        #region Mapping

		
		public ProveedorEntity MapToEntity()
		{
			return this._proveedor;
		}

		public override Entity MapToBaseEntity()
		{
			return MapToEntity();
		}



        #endregion

        #region CollectionSyncro

		public override void SynchronizeCollections()
		{
			//search for deleted items
			for (int i = 0; i < this._proveedor.Servicios.Count; i++)
			{
				ProdSerEntity anEntity = this._proveedor.Servicios[i];
				bool found = false;

				foreach (ProdSerView aView in this.Servicios)
				{
					if (anEntity.Id == aView.Id)
					{
						found = true;
						break;
					}
				}

				if (!found)
				{
					this._proveedor.Servicios.RemoveAt(i);
					i--;
				}
			}

			//search for added items
			for (int i = 0; i < this.Servicios.Count; i++)
			{
				ProdSerView aView = this.Servicios[i];

				if (aView.Id == 0)
					this._proveedor.Servicios.Add(aView.MapToEntity());
			}
			//search for deleted items
			for (int i = 0; i < this._proveedor.ProdServicios.Count; i++)
			{
				ProdSerEntity anEntity = this._proveedor.ProdServicios[i];
				bool found = false;

				foreach (ProdSerView aView in this.ProdServicios)
				{
					if (anEntity.Id == aView.Id)
					{
						found = true;
						break;
					}
				}

				if (!found)
				{
					this._proveedor.ProdServicios.RemoveAt(i);
					i--;
				}
			}

			//search for added items
			for (int i = 0; i < this.ProdServicios.Count; i++)
			{
				ProdSerView aView = this.ProdServicios[i];

				if (aView.Id == 0)
					this._proveedor.ProdServicios.Add(aView.MapToEntity());
			}
		}



        #endregion
        
		#region Enums

		public enum  TiposDNI
		{
			DocExtranjero = 4,
			LE = 3,
			LC = 2,
			DNI = 1,
		}

		#endregion

    }
}
